<div class=content>
	<h2>项目描述</h2>
	<p><a target='_blank' href='https://github.com/mysql/mysql-server' title='src on github'>MySQL Server</a>, the world's most popular open source database, and MySQL Cluster, a real-time, open source transactional database.</p>
	<p><a target='_blank' href='https://github.com/mysql/' title='more code tools on github'>了解MySql</a>必须牢牢记住其体系结构图，Mysql是由SQL接口，解析器，优化器，缓存，存储引擎组成的</p>

	<p>
		<b>图形界面管理工具:</b>

		<a href="https://www.navicat.com.cn/" title="超过五成的《财富》世界 500 强企业每天都会使用 Navicat">NaviCat(收费)</a> | 

		<a href="https://www.phpmyadmin.net/" title="php版本">phpMyAdmin</a> | 
		
		<a href="https://www.mysql.com/products/workbench/" title="官方出品，有点笨重">MySQL Workbench</a> | 
		
		<a href="https://webyog.com/product/sqlyog/" title="易于使用的、快速而简洁的图形化管理MYSQL数据库的工具">SQLyog(收费)</a> | 
	</p>

	
	
	<h3>学习指南</h3>
<p>国内人写的MySQL书籍都不要作为重点，推荐大家只作为辅助的，可以上厕所的时候看看，坚持<a target='_blank' href='http://dev.mysql.com/doc/'>官方手册</a>+测试+实战+思考总结为主的模式。不过，入门阶段还是看视频为主。</p>
	<p>推荐视频：入门看<a target='_blank' href='http://study.163.com/course/introduction.htm?courseId=706085#/courseDetail' title=''>一天玩转MySQL</a>(来自网易云课堂)</p>
	<!-- 去掉失效链接
	<p>其他php相关视频：<a target='_blank' href='http://www.lampym.com/download' title=''>云知梦高清视频下载全集</a> 百度云盘</p>
	-->
	<p>优秀博客：<a target='_blank' href='https://www.cnblogs.com/gimin/tag/Mysql/' title=''>Mysql博客(触发器、视图、索引、存储过程)</a>, </p>
	


	<h3>知识结构</h3>
	<p>MySQL 5.7 和 MySQL 8.0 是当今企业使用最多的版本(2019.9)<p>
	<ol>
		<li>库创建方法总结，以及一些必要注意事项。</li>
		<li>表操作知识点总结，以及我平时是如何分析 SQL 执行效率的。</li>
		<li>如何创建视图、在什么情况下创建视图以及视图实战操作的方方面面。</li>
		<li>存储过程在实战中如何使用以及在什么场景下使用等等。</li>
		<li>讲解触发器使用以及用户自定义函数使用。</li>
	</ol>
	<img src='data/php/images/mysql001.png'>
<pre>
官方博客：http://planet.mysql.com/

1 Connectors指的是不同语言中与SQL的交互
2 Management Serveices & Utilities： 系统管理和控制工具
3 Connection Pool: 连接池。
	管理缓冲用户连接，线程处理等需要缓存的需求

4 SQL Interface: SQL接口。
	接受用户的SQL命令，并且返回用户需要查询的结果。比如select from就是调用SQL Interface

5 Parser: 解析器。
	SQL命令传递到解析器的时候会被解析器验证和解析。解析器是由Lex和YACC实现的，是一个很长的脚本。

	主要功能：
	a . 将SQL语句分解成数据结构，并将这个结构传递到后续步骤，以后SQL语句的传递和处理就是基于这个结构的 
	b.  如果在分解构成中遇到错误，那么就说明这个sql语句是不合理的

6 Optimizer: 查询优化器。
	SQL语句在查询之前会使用查询优化器对查询进行优化。他使用的是“选取-投影-联接”策略进行查询。
	用一个例子就可以理解： select uid,name from user where gender = 1;
	这个select 查询先根据where 语句进行选取，而不是先将表全部查询出来以后再进行gender过滤
	这个select查询先根据uid和name进行属性投影，而不是将属性全部取出以后再进行过滤
	将这两个查询条件联接起来生成最终查询结果

7 Cache和Buffer： 查询缓存。
	如果查询缓存有命中的查询结果，查询语句就可以直接去查询缓存中取数据。
	这个缓存机制是由一系列小缓存组成的。比如表缓存，记录缓存，key缓存，权限缓存等

8 Engine ：存储引擎。
	存储引擎是MySql中具体的与文件打交道的子系统。也是Mysql最具有特色的一个地方。
	Mysql的存储引擎是插件式的。它根据MySql AB公司提供的文件访问层的一个抽象接口来定制一种文件访问机制（这种访问机制就叫存储引擎）
	现在有很多种存储引擎，各个存储引擎的优势各不一样，最常用的MyISAM,InnoDB,BDB
	默认下MySql是使用MyISAM引擎，它查询速度快，有较好的索引优化和数据压缩技术。但是它不支持事务。

	InnoDB支持事务，并且提供行级的锁定，应用也相当广泛。 
	Mysql也支持自己定制存储引擎，甚至一个库中不同的表使用不同的存储引擎，这些都是允许的。
</pre>


	<h3>数据库三大范式：</h3>
	<p>第一范式：每一数据项不可以分割；</p>
	<p>第二范式：有主键；</p>
	<p>第三范式：数据项不能依赖于除主键之外的字段；</p>
	
	
	<h3>MySql知识点：</h3>
	<p>mysql基础：增删改查。</p>
	<p>mysql高级话题：函数、分区、表约束、<br>
	触发器、游标、存储过程、访问控制、事务、
	
	</p>
	
	
	<h2>参考资料</h2>
	<p><a href='http://www.cnblogs.com/yjf512/archive/2012/02/06/2339496.html' target='_blank'>Mysql知识结构 @ cnblog</a></p>
	<p><a href='http://c.biancheng.net/cpp/u/mysql_ml/' target='_blank'>Mysql命令大全</a>: mysql常用命令手册、mysql命令行大全、查询工具</p>
	<p><a href='http://c.biancheng.net/cpp/u/mysql_yh/' target='_blank'>mysql优化指南</a>：Mysql管理与维护教程</p>
	<p><a href='http://www.mysqlpub.com/' target='_blank'>mysql社区</a>：你身边最优秀的MySQL中文社区! MySQL咨询,MySQL培训,MySQL优化</p>
	<p><a href='http://www.mysqlpub.com/onlinemanual/doc/refman/5.1/zh/index.html' target='_blank'>MySQL 5.1参考手册</a>：在线版</p>
	<p><a href='http://edu.51cto.com/course/courseList/id-17.html' target='_blank'>51cto视频教程</a>：mysql、redis等</p>
	<p><a href='http://ourmysql.com/' target='_blank'>OurMySQL</a>：我们致力于一个MySQL知识的分享网站</p>
	<p><a href='http://tencentdba.com/' target='_blank'>腾讯游戏DBA团队</a>：走近我们的产品 技术和文化</p>
	<p><a href='http://www.ttlsa.com/' target='_blank'>运维生存时间</a>：Linux系统教程,运维经验分享</p>
	
	<p><a href='http://www.mysqlpub.com/thread-59114-1-1.html' target='_blank'>优秀MySQL站点</a> 很多站点的汇总</p>
	
	
	
	<h2>日常语句</h2>
<pre>
可以使用\G作为sql语句结束符
show databases;                                       列举所有数据库
create database <数据库名>;               创建数据库
show create database <数据库名>;         查看指定的数据库
drop database <数据库名>;                   删除数据库
alter database <数据库名> character set gbk;             修改数据库的编码
use db_name;                                        设定默认数据库，不会影响操作其他数据库
create table php_one.php_class (                       创建一张表
    class_no varchar(20),
    data_start date
);
show tables;                                          查看数据库所有表
show tables like 'xx_%';                              取出所有表前缀  
                                                     （% 百分号 通配符  任意字符的任意个数的组合）
describe tbl_name;       (简写 desc)                  描述表结构
show columns from cdr;


drop table [if exists] tbl_name;                            删除表
rename table old_tbl_name to new_tbl_name;       可以同时重命名多个表
alter table tbl_name add city_id int(3);                   添加表字段 （列）
alter table tbl_name drop city_id;                          删除表字段
alter table tb_test_01 modify id int(12);                 修改表字段
alter table tb_test_01 change id admin_id int(8);    重命名表字段
alter table tb_test_01 character set utf8;               修改表的字符集编码格式


show variables;                                                   查看所有的设置变量
show variables like 'character_set%';                     查看所有的字符集设置变量
</pre>

</div>